<?php
/**
 *
【工厂模式的优点和缺点】
工厂模式的优点
工厂方法模式可以允许系统在不修改工厂角色的情况下引进新产品。

工厂模式的缺点
客户可能仅仅为了创建一个特定的ConcreteProduct对象，就不得不创建一个Creator子类

【工厂模式适用场景】
1、当一个类不知道它所必须创建的对象的类的时候
2、当一个类希望由它的子类来指定它所创建的对象的时候
3、当类将创建对象的职责委托给多个帮助子类的某一个，并且你希望将哪一个帮助子类是代理者这一信息局部化的时候
 * Created by PhpStorm.
 * User: liangtiehui
 * Date: 2016/1/11
 * Time: 21:11
 */

namespace Factory;

include "Creator.php";
include "ConcreteCreatorA.php";
include "ConcreteCreatorB.php";
include "Product.php";
include "ConcreteProductA.php";
include "ConcreteProductB.php";

class Client
{
    public static function run()
    {
        $creatorA = new ConcreteCreatorA();
        $productA = $creatorA->factoryMethod();
        $productA->operation();

        $creatorB = new ConcreteCreatorB();
        $productB = $creatorB->factoryMethod();
        $productB->operation();
    }
}

Client::run();